#pragma once

#include "opencv2/opencv.hpp"
//typedef void(*CameraCallback)(cv::Mat image, void* pcontext);

#include "halcon_opencv.h"
typedef void(*CameraCallback)(Mat mat_iamge,HObject image, void* pcontext);


class CameraInterface
{
public:
    virtual bool camera_init(char* name,CameraCallback pfunction, void *pcontext)=0;

    virtual bool camera_end()=0;

    virtual bool setExposureTime(double value)=0;

    virtual bool setGainValue(double value)=0;

    virtual bool getExposureTime(double& value)=0;

    virtual bool getGainValue(double& value)=0;

    virtual bool setTriggerMode(std::string name)=0;

    virtual bool setTriggerSource(std::string name)=0;

    virtual bool softwareTrigger()=0;

//	virtual bool getFrameRate(double& value) = 0;

//	virtual bool getLossFrame(int& value) = 0;
};
